package com.cs.archivesmanagement.service;

import com.cs.archivesmanagement.entity.AmAccount;
import com.cs.archivesmanagement.entity.AmDepartment;
import com.cs.archivesmanagement.entity.AmRole;

import javax.management.relation.Role;
import java.util.ArrayList;

/**
 * Created by amo on 2015/8/17.
 */


public interface AccountService {


    /**
     *
     * @param id 用户的ID主键
     * @return 返回查到的用户 否则为空
     */

    AmAccount findById(Integer id);

    /**
     *
     * @param account 新增单个用户
     * @return 返回操作成功与否的布尔值，返回false的时候，就是账户已被注册
     */

    boolean regist(AmAccount account);

    /**
     *
     * @param departmentId 根据所属部门去查找用户
     * @return 属于这个部门的用户
     */




    ArrayList<AmAccount>  getAllAccountByDepartmend(Integer departmentId);

    /**
     * 删除账户
     * @param amAccount 删除一个账户
     * @return 返回是否成功的布尔值
     */




    boolean deleteAccount(AmAccount amAccount);




    /**
     * 获得所有注册用户的信息
     * @return 所有用户
     */



    ArrayList<AmAccount>  getAllAccount();




    /**
     *登录调用的函数，登录成功返回用户账户的实体，否则如果账户或者密码不匹配，都会返回空值
     * @param accountName 用户的账户
     * @param psw 用户的密码
     * @return user's info
     */
    AmAccount login(String accountName,String psw);

    /**
     * 增加一个用户组
     * @param amRole 用户实体
     * @return 返回是否操作成功的布尔值
     */

    boolean addAmRole(AmRole amRole);

    /**
     * 增加一个用户组
     * @param amRole 用户实体
     * @return 返回是否操作成功的布尔值
     */
    boolean upadateAmRole(AmRole amRole);

    /**
     * 增加一个用户组
     * @param amRole 用户实体
     * @return 返回是否操作成功的布尔值
     */
    boolean deleteAmRole(AmRole amRole);


    /**
     * 获得用户组的列表
     * @return 返回用户组列表
     */
    ArrayList<AmRole> getAllAmRole();


    /**
     * 增加一个部门组
     * @param amDepartment 部门实体
     * @return 返回是否操作成功的布尔值
     */

    boolean addAmDepartment(AmDepartment amDepartment);

    /**
     * 增加一个部门组
     * @param amDepartment 部门实体
     * @return 返回是否操作成功的布尔值
     */
    boolean upadateAmDepartment(AmDepartment amDepartment);

    /**
     * 增加一个部门组
     * @param amDepartment 部门实体
     * @return 返回是否操作成功的布尔值
     */
    boolean deleteAmDepartment(AmDepartment amDepartment);


    /**
     * 获得部门组的列表
     * @return 返回部门组列表
     */
    ArrayList<AmDepartment> getAllAmDepartment();


}
